﻿#include "MaterialGprah.h"



#include "MaterialGraph/MaterialGraphModel.h"
#include "MaterialGraph/MaterialGraphViewModel.h"
#include "MaterialGraph/MaterialGraphView.h"

#include "MaterialGraph/Node/MaterialGraphNodeModel.h"
#include "MaterialGraph/Node/MaterialGraphNodeViewModel.h"
#include "MaterialGraph/Node/MaterialGraphNodeView.h"

#include "MaterialGraph/UnlitNode/MaterialUnlitNodeModel.h"
#include "MaterialGraph/UnlitNode/MaterialUnlitNodeViewModel.h"
#include "MaterialGraph/UnlitNode/MaterialUnlitNodeView.h"

#include "MaterialGraph/FloatNode/MaterialFloatNodeModel.h"
#include "MaterialGraph/FloatNode/MaterialFloatNodeViewModel.h"
#include "MaterialGraph/FloatNode/MaterialFloatNodeView.h"

#include "MaterialGraph/CameraNode/MaterialCameraNodeModel.h"
#include "MaterialGraph/CameraNode/MaterialCameraNodeViewModel.h"
#include "MaterialGraph/CameraNode/MaterialCameraNodeView.h"

#include "MaterialGraph/OperationNode/MaterialOperationNodeModel.h"
#include "MaterialGraph/OperationNode/MaterialOperationNodeViewModel.h"
#include "MaterialGraph/OperationNode/MaterialOperationNodeView.h"

#include "MaterialGraph/VectorOperationNode/MaterialVectorOperationNodeModel.h"
#include "MaterialGraph/VectorOperationNode/MaterialVectorOperationNodeViewModel.h"
#include "MaterialGraph/VectorOperationNode/MaterialVectorOperationNodeView.h"

#include "MaterialGraph/BRDFNode/MaterialBRDFNodeModel.h"
#include "MaterialGraph/BRDFNode/MaterialBRDFNodeViewModel.h"
#include "MaterialGraph/BRDFNode/MaterialBRDFNodeView.h"

#include "MaterialGraph/VectorNode/MaterialVectorNodeModel.h"
#include "MaterialGraph/VectorNode/MaterialVectorNodeViewModel.h"
#include "MaterialGraph/VectorNode/MaterialVectorNodeView.h"

#include "MaterialGraph/PropertyNode/MaterialPropertyNodeModel.h"
#include "MaterialGraph/PropertyNode/MaterialPropertyNodeViewModel.h"
#include "MaterialGraph/PropertyNode/MaterialPropertyNodeView.h"

#include "MaterialGraph/SplitVectorNode/MaterialSplitVectorNodeModel.h"
#include "MaterialGraph/SplitVectorNode/MaterialSplitVectorNodeViewModel.h"
#include "MaterialGraph/SplitVectorNode/MaterialSplitVectorNodeView.h"

#include "MaterialGraph/TextureNode/MaterialTextureNodeModel.h"
#include "MaterialGraph/TextureNode/MaterialTextureNodeViewModel.h"
#include "MaterialGraph/TextureNode/MaterialTextureNodeView.h"

#include "MaterialGraph/Link/MaterialGraphLinkModel.h"
#include "MaterialGraph/Link/MaterialGraphLinkViewModel.h"
#include "MaterialGraph/Link/MaterialGraphLinkView.h"

#include "MaterialGraph/Pin/MaterialGraphPinModel.h"
#include "MaterialGraph/Pin/MaterialGraphPinViewModel.h"
#include "MaterialGraph/Pin/MaterialGraphPinView.h"

#include "Framework/Editor.h"

void WHE::RegisterMaterialGraphMVVM()
{
    auto Editor=REditor::Get();

    //register the material graph
    Editor->RegisterMVVM(
        RMaterialGraphModel::StaticClass()
        , RMaterialGraphViewModel::StaticClass()
        , RMaterialGraphView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialGraphNodeModel::StaticClass()
        , RMaterialGraphNodeViewModel::StaticClass()
        , RMaterialGraphNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialUnlitNodeModel::StaticClass()
        , RMaterialUnlitNodeViewModel::StaticClass()
        , RMaterialUnlitNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialFloatNodeModel::StaticClass()
        , RMaterialFloatNodeViewModel::StaticClass()
        , RMaterialFloatNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialCameraNodeModel::StaticClass()
        , RMaterialCameraNodeViewModel::StaticClass()
        , RMaterialCameraNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialOperationNodeModel::StaticClass()
        , RMaterialOperationNodeViewModel::StaticClass()
        , RMaterialOperationNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialVectorOperationNodeModel::StaticClass()
        , RMaterialVectorOperationNodeViewModel::StaticClass()
        , RMaterialVectorOperationNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialBRDFNodeModel::StaticClass()
        , RMaterialBRDFNodeViewModel::StaticClass()
        , RMaterialBRDFNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialVectorNodeModel::StaticClass()
        , RMaterialVectorNodeViewModel::StaticClass()
        , RMaterialVectorNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialPropertyNodeModel::StaticClass()
        , RMaterialPropertyNodeViewModel::StaticClass()
        , RMaterialPropertyNodeView::StaticClass());    

    Editor->RegisterMVVM(
        RMaterialSplitVectorNodeModel::StaticClass()
        , RMaterialSplitVectorNodeViewModel::StaticClass()
        , RMaterialSplitVectorNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialTextureNodeModel::StaticClass()
        , RMaterialTextureNodeViewModel::StaticClass()
        , RMaterialTextureNodeView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialGraphLinkModel::StaticClass()
        , RMaterialGraphLinkViewModel::StaticClass()
        , RMaterialGraphLinkView::StaticClass());

    Editor->RegisterMVVM(
        RMaterialGraphPinModel::StaticClass()
        , RMaterialGraphPinViewModel::StaticClass()
        , RMaterialGraphPinView::StaticClass());
        
}